/*** Created Time: 2022年5月24日 16:52:39 ***/
/*** Author: Eric                        ***/

// 用户态可直接执行系统调用相关的程序

#ifndef _MY_SYSCALL_H_
#define _MY_SYSCALL_H_

#include <onix/types.h>

typedef enum syscall_t {
    SYS_NR_TEST,
    SYS_NR_EXIT = 1,        // exit 系统调用号
    SYS_NR_FORK = 2,        // fork 系统调用号
    SYS_NR_WRITE = 4,       // write 系统调用号
    SYS_NR_WAITPID = 7,     // waitpid 系统调用号
    SYS_NR_TIME = 13,       // time 系统调用号
    SYS_NR_GETPID = 20,     // getpid 系统调用号
    SYS_NR_BRK = 45,        // brk 系统调用号
    SYS_NR_GETPPID = 64,    // getppid 系统调用号
    SYS_NR_YIELD = 158,     // yield 系统调用号
    SYS_NR_SLEEP = 162,     // 睡眠系统调用号
} syscall_t;

u32 test(void);
void yield(void);       // yield 系统调用函数
void sleep(u32 ms);     // sleep 系统调用函数
pid_t fork(void);       // fork 系统调用函数
void exit(int status);  // exit 系统调用函数，终止当前进程
pid_t waitpid(pid_t pid, int32 *status);    // waitpid 系统调用函数,等待进程状态变化
pid_t getpid(void);     // getpid 系统调用函数，获得任务id
pid_t getppid(void);    // getppid 系统调用函数，获得父任务id

int32 brk(void *addr);  //  brk 系统调用函数
int32 write(fd_t fd, char *buf, u32 len);   // write 系统调用函数

time_t time(void);      // time 系统调用函数，获取当前时间戳，从 1970-01-01 00:00:00 开始的秒数

#endif